/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ComExWeb.ui.beans;

import ComExWeb.dominio.Imagem;
import ComExWeb.dominio.Oferta;
import ComExWeb.util.JsfUtil;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.DualListModel;
import org.primefaces.model.StreamedContent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@ManagedBean
@ViewScoped
public class OfertaJsfBean extends BaseCRUDJSFBean {

    private static final Logger log = LoggerFactory.getLogger(OfertaJsfBean.class);
    private DualListModel<String> cities;
    private List<Imagem> imagens = new ArrayList<Imagem>();
    private StreamedContent imagem;

    public Oferta getOferta() {
        return getObjSelecionado();
    }

    //private Logger logger = Logger.getLogger(FileUploadController.class.getName());
    public void upload(FileUploadEvent event) throws IOException {
        //log.log(Level.INFO, "Uploaded: {0}", event.getFile().getFileName());

        //File file = new File(event.getFile().getFileName());

        try {
            imagem = new DefaultStreamedContent(event.getFile().getInputstream());
            byte[] im = event.getFile().getContents();
            Imagem imagemTemp = new Imagem();
            imagemTemp.setCaminho(event.getFile().getFileName());
            imagemTemp.setNmImagem(event.getFile().getFileName());
            System.out.println(" O nome do arquivo é "+event.getFile().getFileName());
            imagemTemp.setArquivoImagem(im);
            //add a imagem na lista
            //imagens.add( imagens.size()+1, imagemTemp);
            imagens.add(imagemTemp);

            // FileInputStream in = new FileInputStream(JsfUtil.getAppPath() + "/imagens/" + event.getFile().getFileName());
            //in.close();
            //instacia a imagem


        } catch (FileNotFoundException ex) {
            java.util.logging.Logger.getLogger(OfertaJsfBean.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            //Logger.getLogger(Imagem.class.getName()).log(Level.SEVERE, null, ex);
        }

        FacesMessage msg = new FacesMessage("Upload do arquivo executado", event.getFile().getFileName());

        FacesContext.getCurrentInstance().addMessage(null, msg);
    }

    public void setCategoria(Oferta oferta) {
        setObjSelecionado(oferta);


    }
    private List<Oferta> ofertas = new ArrayList<Oferta>();

    public List<Oferta> getOfertas() {
        return ofertas;


    }

    /** Creates a new instance of ColaboradorJSFBean */
    public OfertaJsfBean() {

        //Cities
        List<String> citiesSource = new ArrayList<String>();
        List<String> citiesTarget = new ArrayList<String>();

        List<Imagem> imagems = new ArrayList<Imagem>();

        citiesSource.add("Vitória");
        citiesSource.add("São Paulo");
        citiesSource.add("Vila Velha");
        citiesSource.add("Cariacica");
        citiesSource.add("Serra");

        cities = new DualListModel<String>(citiesSource, citiesTarget);



    }

    @Override
    public void setup() {

        try {
            setPaginaForm("form_oferta");
            setPaginaListagem(
                    "list_oferta");
            setCrudClass(
                    Oferta.class);

            renovarTabela();

        } catch (Exception e) {
            String err = "Erro na inicialização: " + e.getMessage();
            error(
                    err);
            log.error(err, e);


        }
    }

    @Override
    protected void renovarTabela() {
        this.ofertas = getCrudService().findAll(Oferta.class);
    }

    public DualListModel<String> getCities() {
        return cities;


    }

    public void setCities(DualListModel<String> cities) {
        this.cities = cities;


    }

    public List<Imagem> getImagens() {
        return imagens;


    }

    public void setImagens(List<Imagem> imagens) {
        this.imagens = imagens;

    }

    public StreamedContent getImagem() {
        return imagem;
    }

    public void setImagem(StreamedContent imagem) {
        this.imagem = imagem;
    }
}
